<?php

/**
 * Description of TFilterclass
 *
 * @author Saulo
 */
class TFilter extends TExpression {
    private $variable;
    private $operator;
    private $value;

    /*
     * instancia um novo filtro
     * @param $variable = variavel
     * @param $operator = operador(>,<)
     * @param $value = valor a ser comparado
     */

    public function  __construct($variable, $operator, $value)
    {
        $this->variable = $variable;
        $this->operator = $operator;
        $this->value = $this->transform($value);
    }

    /*
     * Recebe um valor e e faz as modificações necessárias
     * @param $value = valor a ser transformado
     */
    private function transform($value)
    {
        //para array
        if(is_array($value))
        {
            foreach ($value as $x)
            {
                if(is_integer($x))
                {
                    $foo[] = $x;
                }
                else if (is_string($x))
                {
                    $foo[] = "'$x'";
                }
            }
            //coverter o array em string separado por vírgula
            $result = '('.implode(",", $foo).')';

        }
        else if(is_string($value))
        {
            $result = "'$value'";
        }
        else if (is_null($value))
        {
               $result = 'NULL';            
        }
        else if(is_bool($value))
        {
            $result = $value?'TRUE':'FALSE';            
        }
        else
        {
            $result = $value;
        }
        return $result;
    }

    public function dump()
    {
        return "{$this->variable} {$this->operator} {$this->value}";
    }
}
?>
